package com.ruoyi.common.utils;

import java.lang.reflect.Field;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class ReflectionUtil {
    /**
     * 通过反射获取对象属性值
     * @param obj 目标对象
     * @param fieldName 属性名
     * @return 属性值
     */
    public static Object getFieldValue(Object obj, String fieldName) {
        try {
            Field field = obj.getClass().getDeclaredField(fieldName);
            field.setAccessible(true);
            return field.get(obj);
        } catch (Exception e) {
            throw new RuntimeException("反射获取字段值失败", e);
        }
    }

    /**
     * 批量获取对象属性值
     * @param obj 目标对象
     * @param fieldNames 属性名列表
     * @return 属性值Map
     */
    public static Map<String, Object> getFieldValues(Object obj, List<String> fieldNames) {
        Map<String, Object> result = new LinkedHashMap<>();
        for (String fieldName : fieldNames) {
            result.put(fieldName, getFieldValue(obj, fieldName));
        }
        return result;
    }


}